home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / taropyon / hewin / ccisrc / colset.cci < prev    next >
Text File  |  1993-11-30  |  5KB  |  214 lines

  1. /*************************************************************************
  2. *    色指定用ダイアログ
  3. *************************************************************************/
  4.  
  5.  
  6. #define    DLG_XS    (8+18*16+8)
  7.  
  8. int        _csetDspFunc(char *dlg)
  9. {
  10.     int        *para;
  11.     char    *evt;
  12.     int        nowCol;
  13.     int        evtNo;
  14.     int        i, x, y;
  15.     int        x0, y0, xs, ys;
  16.  
  17.     evtNo = 0;
  18.     para = DLG_getPtr(dlg);
  19.     evt = para[0];
  20.     nowCol = para[1];
  21.     x0 = DLG_getFr(dlg,0);
  22.     y0 = DLG_getFr(dlg,1);
  23.     xs = DLG_getFr(dlg,2);
  24.     ys = DLG_getFr(dlg,3);
  25.  
  26.     MOS_moveArea( x0, y0, x0+xs-1, y0+ys-1 );
  27.  
  28.     DSP_boxfHol( x0+2, y0+2, x0+xs-2-1, y0+2+20-1, PSET, C_WHITE, C_HWHITE, C_HBLACK);
  29.     DSP_str( x0+4, y0+4, C_MBLACK, C_WHITE, 16, "COLOR SELECT");
  30.     EVT_set_mos( evt, evtNo++, i, MOSEVT_NOT|MOSEVT_QUICK, BTN_LEFT,
  31.                      x0+2, y0+2, x0+xs-2-1, y0+2+20-1, "DlgMvFunc", dlg );
  32.  
  33.     for ( i = 0; i < 16; ++i )
  34.     {
  35.         x = x0 + 8 + i * 18;
  36.         y = y0 + 32;
  37.         DSP_box (x  ,y  ,x+15  ,y+15  , PSET, C_MBLACK);
  38.         DSP_box (x+1,y+1,x+15-1,y+15-1, PSET, C_HWHITE);
  39.         DSP_boxf(x+2,y+2,x+15-2,y+15-2, PSET, i       );
  40.         if ( i == nowCol )
  41.         {    DSP_box (x-1,y-1,x+15-1,y+15-1, PSET, C_HRED );
  42.         } else
  43.         {    EVT_set_mos( evt, evtNo++, i, MOSEVT_NOT, BTN_LEFT,
  44.                          x, y, x+15, y+15, NULL, NULL);
  45.         }
  46.     }
  47.  
  48.     /* 終了用イベント    */
  49.     EVT_set_mos( evt, evtNo++, 9999, MOSEVT_BTNOLY, BTN_RIGHT,
  50.                  0, 0, 0, 0, NULL, NULL);
  51. }
  52.  
  53. int        COLSET_dlg(int nowCol)
  54. {
  55.     int        ret;
  56.     char    *dlg;
  57.     char    *evt;
  58.     char    *mosTk;
  59.     int        para[2];
  60.  
  61.     if ( (evt = EVT_alloc(NULL,24)) == NULL )
  62.         return (ERR);
  63.     para[0] = evt;
  64.     para[1] = nowCol;
  65.     dlg = DLG_open( DLGPOS_MOS_SET_CENTER,DLGPOS_MOS_SET_CENTER,
  66.         DLG_XS,80, COLMIX(C_WHITE,C_HWHITE), "_csetDspFunc", para );
  67.     if ( dlg == NULL )
  68.     {
  69.         EVT_free(evt);
  70.         return (ERR);
  71.     }
  72.     mosTk = MOS_push();
  73.     DLG_dsp(dlg);
  74.  
  75.     while ( 1 )
  76.     {
  77.         MOS_CON();
  78.         ret = EVT_chk(evt,0);
  79.         if ( (ret >= 0 && ret < 16) || ret == 9999 )
  80.             break;
  81.     }
  82.  
  83.     DLG_close(dlg);
  84.     EVT_free(evt);
  85.     MOS_pop(mosTk);
  86.     if ( ret >= 0 && ret < 16 )
  87.         return (ret);
  88.     else
  89.         return (ERR);
  90. }
  91.  
  92. int        _csetDspFunc2(char *dlg)
  93. {
  94.     int        *para;
  95.     char    *evt;
  96.     int        nowCol;
  97.     int        evtNo;
  98.     int        i, j, flag, x, y;
  99.     int        x0, y0, xs, ys;
  100.  
  101.     evtNo = 0;
  102.     para = DLG_getPtr(dlg);
  103.     evt = para[0];
  104.     nowCol = para[1];
  105.     x0 = DLG_getFr(dlg,0);
  106.     y0 = DLG_getFr(dlg,1);
  107.     xs = DLG_getFr(dlg,2);
  108.     ys = DLG_getFr(dlg,3);
  109.  
  110.     MOS_moveArea( x0, y0, x0+xs-1, y0+ys-1 );
  111.  
  112.     DSP_boxfHol( x0+2, y0+2, x0+xs-2-1, y0+2+20-1, PSET, C_WHITE, C_HWHITE, C_HBLACK);
  113.     DSP_str( x0+4, y0+4, C_MBLACK, C_WHITE, 16, "MIX COLOR SELECT");
  114.     EVT_set_mos( evt, evtNo++, i, MOSEVT_NOT|MOSEVT_QUICK, BTN_LEFT,
  115.         x0+2, y0+2, x0+xs-2-1, y0+2+20-1, "DlgMvFunc", dlg);
  116.  
  117.     for ( j = 0; j < 2; ++ j )
  118.     {
  119.         y = y0 + j*20 + 32;
  120.         DSP_egbStr( x0+4, y, C_MBLACK, COLMIX(C_WHITE,C_HWHITE), 16,"color %d", j+1);
  121.         for ( i = 0; i < 16; ++i )
  122.         {
  123.             x = x0 + 8*8+ 8 + i * 18;
  124.             DSP_box (x  ,y  ,x+15  ,y+15  , PSET, C_MBLACK);
  125.             DSP_box (x+1,y+1,x+15-1,y+15-1, PSET, C_HWHITE);
  126.             DSP_boxf(x+2,y+2,x+15-2,y+15-2, PSET, i       );
  127.             flag = FALSE;
  128.             if ( j == 0 )
  129.             {
  130.                 if ( (nowCol & 15) == i )
  131.                     flag = TRUE;
  132.             } else
  133.             {
  134.                 if ( ((nowCol>>4) & 15) == i )
  135.                     flag = TRUE;
  136.             }
  137.             if ( flag )
  138.             {
  139.                 DSP_box (x-1,y-1,x+15-1,y+15-1, PSET, C_HRED );
  140.             } else
  141.             {
  142.                 EVT_set_mos( evt, evtNo++, i + (j * 16), MOSEVT_NOT, BTN_LEFT,
  143.                     x, y, x+15, y+15, NULL, NULL);
  144.             }
  145.         }
  146.     }
  147.  
  148.     EVT_setSelBtn( evt, evtNo++, 9997, MOSEVT_BTN, BTN_LEFT,
  149.         x0+xs/2-32, y0+ys-28, 64, 24, NULL, NULL,
  150.         C_MBLACK, C_WHITE, C_HBLACK, "SETUP" );
  151.     /* 終了用イベント    */
  152.     EVT_set_mos( evt, evtNo++, 9999, MOSEVT_BTNOLY, BTN_RIGHT,
  153.         0, 0, 0, 0, NULL, NULL);
  154. }
  155.  
  156. int        COLSET_dlg2(int nowCol)
  157. {
  158.     int        ret;
  159.     char    *dlg;
  160.     char    *evt;
  161.     char    *mosTk;
  162.     int        para[2];
  163.  
  164.     if ( (evt = EVT_alloc(NULL,40)) == NULL )
  165.         return (ERR);
  166.     para[0] = evt;
  167.     para[1] = nowCol;
  168.     dlg = DLG_open( DLGPOS_MOS_SET_CENTER,DLGPOS_MOS_SET_CENTER,
  169.         DLG_XS+8*8,112, COLMIX(C_WHITE,C_HWHITE),
  170.         "_csetDspFunc2", para );
  171.     if ( dlg == NULL )
  172.     {
  173.         EVT_free(evt);
  174.         return (ERR);
  175.     }
  176.     mosTk = MOS_push();
  177.     DLG_dsp(dlg);
  178.  
  179.     while ( 1 )
  180.     {
  181.         MOS_CON();
  182.         ret = EVT_chk(evt,0);
  183.         if ( ret == 9999 || ret == 9997 )
  184.             break;
  185.         else if ( ret >= 0 && ret < 16 )
  186.         {
  187.             nowCol = (nowCol & 0xF0) + ret;
  188.             para[1] = nowCol;
  189.             DLG_dsp(dlg);
  190.         } else if ( ret >= 16 && ret < 32 )
  191.         {
  192.             nowCol = (nowCol & 0x0F) + ((ret-16)<<4);
  193.             para[1] = nowCol;
  194.             DLG_dsp(dlg);
  195.         }
  196.     }
  197.  
  198.     DLG_close(dlg);
  199.     EVT_free(evt);
  200.     MOS_pop(mosTk);
  201.     if ( ret == 9999 )
  202.         return (ERR);
  203.     else
  204.     {
  205.         if ( ((nowCol>>4) & 15) == (nowCol & 15) )
  206.             nowCol = nowCol & 15;
  207.         else
  208.             nowCol = nowCol | 0x1000;
  209.         return (nowCol);
  210.     }
  211. }
  212.  
  213. #undef    DLG_XS
  214.